#pragma once
#include "C_TextureManager.h"
class C_Sprite;

class C_Texture
{
private:
	UINT32		m_index;
	UINT32		m_bounds;
	sf::Texture m_texture;
	std::string m_filename;

	static C_TextureManager* m_TextureMngr;
public:
	C_Texture();
	~C_Texture();

	inline std::string name() { return m_filename; }

	///////////////////////////////////////////////////////////////////////////////////////
	///////////////	SET/GET TEXTURE
	inline sf::Texture	texture	  (				)	{ return m_texture; }
	inline void			setTexture(sf::Texture t)	{ m_texture = t;	}

	///////////////////////////////////////////////////////////////////////////////////////
	///////////////	SET/GET INDEX
	inline UINT32	index(				 )	{ return m_index;	}
	inline void		setIndex(UINT32 index)	{ m_index = index;	}

	///////////////////////////////////////////////////////////////////////////////////////
	///////////////	BIND/UNBIND
	void bind(C_Sprite *s);
	void unbind();

	///////////////////////////////////////////////////////////////////////////////////////
	///////////////	LOAD FROM FILE
	void loadFromFile(std::string filename);

	////////////////////////////////////////////////////////////////////////////////////
	///////////////	STATIC FUNCTION
	static void setTextureManager(C_TextureManager* tm) { m_TextureMngr = tm; }

	friend class C_Sprite;
};

